In a NAND flash memory (hereinafter, referred to as a NAND memory), information is stored according to a charge amount stored in a floating gate of a memory cell. In a writing period of the NAND flash memory, by injecting charges into the memory cell, the charge amount of the memory cell is changed according to a data value which is to be stored. In each memory cell, the charge amount is changed due to the occurrence of capacitive coupling between adjacent memory cells in a word line direction and a bit line direction. The change in charge amount is called inter-adjacent-cell interference. If the inter-adjacent-cell interference occurs, the charge amount of the memory cell becomes different from the charge amount corresponding to the stored data value, so that, in a reading period, an erroneous data value may be read.